package main

import (
	"fmt"
	"os"
	"flag"
)

//引子：反引号``里的内容会以原始样式打印
func main01() {
	//字符
	fmt.Println('我')
	//字符串
	fmt.Println("字符串")
	//原样输出
	fmt.Println(`
	咏闭包
闭包就像一层壳
	内层函数是内核
		内核各有各状态
			都在自己壳里藏
		劳资就是不押韵
	call一次壳就得到一个不一样的核呵呵呵
——唐·大猫
	`)
}

//获得命令行参数：简易版
func main02() {
	//fmt.Println(os.Args)
	for i,v := range os.Args{
		fmt.Println(i,v)
	}
}

//fuck.exe -name 张三丰 -age 90 -rmb 12340000.0 -alive false
//获得命令行参数
func main03() {

	//定义参数
	namePtr := flag.String("name", "无名氏", "姓甚名谁")
	agePtr := flag.Int("age", -1, "阁下的年龄")
	rmbPtr := flag.Float64("rmb", 1.0, "你的资产")
	alivePtr := flag.Bool("alive", true, "是否健在")

	//解析获取参数，丢入参数的指针中
	flag.Parse()

	fmt.Println(*namePtr, *agePtr, *rmbPtr, *alivePtr)
}

//fuck.exe -name 张三丰 -age 90 -rmb 12340000.0 -alive false
func main04() {

	/*	var namePtr *string = &name
		var agePtr *int = &age
		var rmbPtr *float64 = &rmb
		var alivePtr *bool = &alive*/
	var name string//""
	var age int//0
	var rmb float64//0.0
	var alive bool//false

	flag.StringVar(&name, "name", "无名氏", "阁下姓甚名谁")
	flag.IntVar(&age, "age", -1, "阁下的年龄")
	flag.Float64Var(&rmb, "rmb", 1.0, "你的资产")
	flag.BoolVar(&alive, "alive", true, "是否健在")

	//解析获取参数，丢入参数的指针中
	flag.Parse()
	fmt.Println(name, age, rmb, alive)
}
